# 使用 Python 3.10 作为基础镜像
FROM python:3.10-slim

# 设置工作目录
WORKDIR /app

# 创建开发者用户并安装必要工具
RUN apt-get update && apt-get install -y --no-install-recommends \
    curl \
    build-essential \
    git \
    openssh-server \
    nginx
RUN useradd -ms /bin/bash developer \
    && mkdir -p /workspace \
    && chown -R developer:developer /workspace \
    && chmod 755 /workspace \
    && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# 设置 pip 源为清华镜像并安装系统级包（移除 USER developer）
RUN pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple \
    && pip install --no-cache-dir \
    flask \
    numpy \
    arxiv \
    scholarly \
    semanticscholar \
    paperscraper \
    pymilvus \
    elsapy \
    uuid \
    openai \
    flask-sqlalchemy \
    flask-cors \
    flask-migrate \
    python-dotenv

# 切回 root 用户以配置服务
USER root

# 配置 Nginx
RUN mkdir -p /var/log/nginx

# 创建 SSH 所需目录并配置 SSH
RUN mkdir -p /var/run/sshd \
    && echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config \
    && echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config \
    && echo 'ClientAliveInterval 180' >> /etc/ssh/sshd_config \
    && echo 'root:root' | chpasswd \
    && echo 'developer:developer' | chpasswd

# 暴露必要端口
EXPOSE 80 
# EXPOSE 5000
# git 仓库下来
# token 加载token到app.py 中
# 启动app.py 和 nginx

# 克隆并重组目录结构
WORKDIR /workspace
RUN git clone https://gitee.com/xiong_bio/literature_recommend.git temp_repo \
    && mv temp_repo/* temp_repo/.[!.]* . \
    && rm -rf temp_repo 
# 确保 nginx 配置文件在正确位置
RUN rm -f /etc/nginx/sites-enabled/default

COPY nginx.config /etc/nginx/conf.d/default.conf

# 创建启动脚本
COPY <<EOF /start.sh
#!/bin/bash
service nginx start
cd /workspace/project/backend
su -c "python app.py" developer &
/usr/sbin/sshd -D
EOF

# 切换回 root 用户来设置权限
USER root

# 给启动脚本添加执行权限
RUN chmod +x /start.sh

# 使用单个CMD启动所有服务
CMD ["/start.sh"]